#ifndef DIRECTORYHANDLER_H_
#define DIRECTORYHANDLER_H_
#include <algorithm>
#include <string>
#include <vector>
#include <string.h>
#include <iostream>
#include <stdio.h>
#include <dirent.h>
#include <sys/stat.h>
using namespace std;
class directoryHandler {
private:
	string directoryPath;
public:
	//Recibe la ruta del directorio
	directoryHandler(const string* dirPath);

	~directoryHandler();

	void setDirectoryPath(const string* dirPath);
	//Devuelve la cantidad de archivos que hay en el directorio
	int getNumberOfFiles() const;

	//Genera una lista de los archivos que hay en el directorio y la guarda en outPath
	void generateListOfFiles(const string* outPath) const;

	//Devuelve un array con la ruta completa de los archivos en el directorio
	vector <string> getFilesPaths() const;

	//Devuelve un array con los nombres de los archivos en el directorio
	vector <string> getFilesNames() const;

	//Elimina los archivos del directorio si recursive==true tambien los subdirec
	void deleteFiles(bool recursive) const;

	//Elimina una carpeta del directorio
	void deleteFolder(const string* name) const;

	//Crea una nueva carpeta en el directorio actual
	void createFolder(const string* name) const;

	//Elimina un archivo del directorio
	void deleteFile(const string* name) const;
	//Determina si una carpeta existe en el directorio
	bool fileExists(const string* name) const;

	//Determina si una carpeta existe en el directorio
	bool folderExists(const string* name) const;

	//Mueve un archivo del directorio actual(el del handler) a newPath.
	void moveFile(const string* name, const string* newPath) const;



};





#endif /* DIRECTORYHANDLER_H_ */
